#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
	
	printf("begin: 我是一个进程，pid：%d, ppid：%d\n",getpid(),getppid());
	// 1：函数返回两次如何理解——fork是一个系统调用接口，也就是函数，这里fork有两个返回值，是由于内部实现子进程，而子进程是新的task_struct 和 数据构成，父进程生成子进程时就会返回两次
	// 2：为什么子进程返回0，父进程返回子进程pid —— 这是因为父子关系，一个父亲可以有多个孩子，而一个孩子只能有一个父亲；同时要能区分每个子进程，所以子进程的ppid == 父进程 pid
	pid_t id = fork();

	if(id == 0)
	{
		// 子进程
		while(1)
		{
			printf("我是一个子进程，pid:%d,ppid:%d\n",getpid(),getppid());
			sleep(1);
		}
	}
	else if(id>0)
	{
		//父进程
		while(1)
		{
			printf("我是一个父进程，pid:%d,ppid:%d\n",getpid(),getppid());
			sleep(1);
		}
	}
	else
	{
		
	}
	//while(1)
	//{
	//	
	//	printf("i am a porcess, my id is：%d, parents is: %d\n",getpid(),getppid());
	//	//printf("hello linux\n");
	//	sleep(1);
	//}
	return 0;
}
